//package com.hzsai.pool;
//
//import com.hzsai.utils.SQLUtils;
//import org.springframework.stereotype.Component;
//
//import javax.sql.DataSource;
//import java.io.PrintWriter;
//import java.sql.Connection;
//import java.sql.SQLException;
//import java.sql.SQLFeatureNotSupportedException;
//import java.util.ArrayList;
//import java.util.LinkedList;
//import java.util.List;
//import java.util.logging.Logger;
//
//@Component
//public class MyDataSource implements DataSource{
//
//    public MyDataSource() {
//    }
//
//    public static final int poolSize = 5;
//
//    /**
//     * 连接池
//     */
//    public static LinkedList<Connection> pool = new LinkedList<Connection>();
//
//    static {
//        try {
//            RefreshPool();
//        } catch (SQLException e) {
//            e.printStackTrace();
//        } catch (ClassNotFoundException e) {
//            e.printStackTrace();
//        }
//    }
//
//    public static void RefreshPool() throws SQLException, ClassNotFoundException {
//        pool.clear();
//        for (int i = 0; i < poolSize; ++i) {
//            Connection connection = SQLUtils.getConnection();
//            pool.add(connection);
//        }
//    }
//
//    public static void RefreshPool(String username, String password) throws SQLException, ClassNotFoundException {
//        pool.clear();
//        for (int i = 0; i < poolSize; ++i) {
//            Connection conn = SQLUtils.getConnection(username, password);
//            pool.add(conn);
//        }
//    }
//
////    public static Connection getConn() throws SQLException, ClassNotFoundException {
////        if (pool.isEmpty()) {
////            // z怎么测试·这个？？？
////            System.out.println("连接刷新了!!!");
////            RefreshPool();
////        }
////        return pool.removeFirst(); // remove and return the first one.
////    }
//
//    @Override
//    public Connection getConnection() throws SQLException {
//        if (pool.isEmpty()) {
//            // z怎么测试·这个？？？
//            System.out.println("连接刷新了!!!");
//            try {
//                RefreshPool();
//            } catch (ClassNotFoundException e) {
//                e.printStackTrace();
//            }
//        }
//        return pool.removeFirst(); // remove and return the first one.
//    }
//
//    @Override
//    public Connection getConnection(String username, String password) throws SQLException {
//        if (pool.isEmpty()) {
//            System.out.println("连接在刷新中。。。");
//            try {
//                RefreshPool(username, password);
//            } catch (ClassNotFoundException e) {
//                e.printStackTrace();
//                System.out.println("连接池连接发生异常。。。");
//            }
//        }
//        return pool.removeFirst();
//    }
//
//    @Override
//    public <T> T unwrap(Class<T> iface) throws SQLException {
//        return null;
//    }
//
//    @Override
//    public boolean isWrapperFor(Class<?> iface) throws SQLException {
//        return false;
//    }
//
//    @Override
//    public PrintWriter getLogWriter() throws SQLException {
//        return null;
//    }
//
//    @Override
//    public void setLogWriter(PrintWriter out) throws SQLException {
//
//    }
//
//    @Override
//    public void setLoginTimeout(int seconds) throws SQLException {
//
//    }
//
//    @Override
//    public int getLoginTimeout() throws SQLException {
//        return 0;
//    }
//
//    @Override
//    public Logger getParentLogger() throws SQLFeatureNotSupportedException {
//        return null;
//    }
//}
